Retrodeck support - #236
Open
pawndev wants to merge 19 commits into
Open
Conversation
|
Note: in RetroDECK users can move the folders, so better to read their location from the retrodeck config (json format). |
Collaborator
Author
Yep I already did the parsing of the config json in my local changes |
Parse the retrodeck.json file to handle properly all of the paths (bios, roms, etc.) Handle gamelist that are not in the roms directories
sdhibit
pushed a commit
to sdhibit/grout
that referenced
this pull request
Jul 26, 2026
Add a new ESDE CFW target covering EmulationStation Desktop Edition setups on desktop Linux (Steam Deck, SteamOS, Bazzite): standalone ES-DE, EmuDeck, and RetroDECK — one binary, with the flavor selected via a first-run variant wizard and switchable in a new ES-DE Settings screen. Directories resolve through a precedence chain: explicit config override > environment variable > variant discovery > variant default. Discovery reads EmuDeck's settings.sh (emulationPath), RetroDECK's retrodeck.json (as requested by the RetroDECK maintainer in rommapp#236), and ES-DE's es_settings.xml, so relocated/SD-card installs work without manual configuration. Every directory (base, ROMs, BIOS, saves, ES-DE data, media) can also be overridden individually in settings. ES-DE layout differences from Batocera-style ES are handled: - gamelists are written to <appdata>/gamelists/<system>/gamelist.xml with ./-relative game paths (new gamelist.Options hook) - media is written to <media>/<system>/{covers,marquees,backcovers, fanart,screenshots,videos,manuals} matched by ROM basename; a new UsesArtSuffixes() predicate disables the -thumb/-marquee/-boxback/ -fanart filename suffixes for ES-DE - no ES restart scheduling (grout runs as ES-DE's child); the bezel art option is hidden (no such media type in ES-DE) Grout installs as an ES-DE port in <roms>/ports/. The launcher exports GROUT_ESDE_ROMS_DIR from its own location so the ROMs dir is correct for any variant, and carries the Steam Deck input workarounds from PR rommapp#235 (ignore axis-motion event flooding, suppress Steam keyboard). The amd64 build now bundles the full SDL library stack for SteamOS's sealed OS and RetroDECK's flatpak sandbox. Includes platform table (docs/platforms/ESDE.md) generated into cfw/esde/data/platforms.json, packaging target (Grout-ESDE.zip), CI release wiring, in-app updater support, install/settings docs, and unit tests for path precedence and the three config parsers. Closes rommapp#210, closes rommapp#238. Builds on rommapp#235, rommapp#236, and rommapp#213.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is the continuation of #213
Next things to think of:
$XDG_CONFIG_HOME/ES-DE/gamelists/{core}/folder$XDG_CONFIG_HOME/ES-DE/downloaded_media/{core}/{3dboxes, backcovers, covers, fanart, manuals, marquees, miximages, physicalmedia, screenshots, titlescreens, videos}$XDG_CONFIG_HOME/retrodeck/retrodeck.jsonthere are many paths definedNext things to do:
$XDG_CONFIG_HOME/ES-DE/gamelists/{core}/Initial description: